/**
 * A list of operands passed to an instruction
 * 
 * Define the operands in this object, then pass to an instruction to create the
 * binary value.
 * 
 * @author Andrew Krieger
 * @version 0.1
 * @since 2 Apr 2012
 */

public interface IOperand {
	/**
	 * An enum defining the keywords.
	 * 
	 * @version 1.0
	 * @since 2 Apr 2012
	 */
	public static enum Keyword {
		DM, DR, DX, EX, FC, FL, FM, FR, FS, FX, LR, NW, ST;
	};

	/**
	 * Add an integer operand to this list.
	 * 
	 * @param kw
	 *            The keyword of the operand
	 * @param val
	 *            The integer value
	 * @return false if the given keyword was already defined
	 */
	boolean addNumeric(Keyword kw, Integer val);

	/**
	 * Add a string-values operand to this list.
	 * 
	 * @param kw
	 *            The keyword of the operand
	 * @param val
	 *            The string value
	 * @return false if the given keyword was already defined
	 */
	boolean addString(Keyword kw, String val);
}
